package com.test.java01;

import java.util.Random;

public class Student {
    //角色的姓名，血量都应该不同
    //乔峰 100，鸠摩智 100
    private String name;
    private int blood;
    //增加技能：性别，长相和技能。
    private char gender;
    private String face;
    private String skill;
    //长相和技能要用随机数组来获取
    //男，女长相分开
    String[] allface={"五官端正","人见人爱","花见花开","面目狰狞","相貌平平"};

    String[] injure={"七十二变","孙子兵法","如来神功","必杀技","缩骨","少林寺棍法"};
    //创建空参构造方法
    public Student(){

    }
    //创建带参构造方法
    public Student(String name,int blood,char gender){
        this.name=name;
        this.blood=blood;
        this.gender=gender;
        //调用长相（gender）--同时把gender传过来
        setSkill();//因为是随机值，不能直接赋值而得。
                     //要是不调用赋值方法，就为Null
        setFace();
    }
    //赋值--姓名
    public void setName(String name){
        this.name=name;
    }
    //获取--姓名
    public String getName() {
        return name;
    }
    //赋值---性别
    public void setGender(char gender){
        this.gender=gender;
    }
    //获取---性别
    public char getGender(){
        return gender;
    }
    //赋值---样貌--随机值
    public void setFace(){
        Random r=new Random();
        int index=r.nextInt(allface.length);
        this.face=allface[index];
    }
    //获取---样貌
    public String getFace(){
        return face;
    }
    //赋值---血量
    public void setBlood(int blood){
        this.blood=blood;
    }
    //获取---血量
    public int getBlood() {
        return blood;
    }
    //赋值---技能----随机值
    public void setSkill(){
        Random r=new Random();
        int index=r.nextInt(injure.length);
        this.skill=injure[index];
    }
    //获取---技能
    public String getSkill(){
        return skill;
    }
    //创建攻击方法
                        //r1.attack(r2)这里的role是r2
                       //以类名作为形参类型，可以通过修改
                      //形参值来使实参值改变，基本数据类型
                     //只能copy实参里的值
    public void attack(Student role){
        //使用随机数来生成造成的伤害 1~30
        Random r=new Random();
        int hurt= r.nextInt(20)+1;
        //计算剩余的血量,并判断血量是否为负
        int remainblood=role.getBlood()-hurt;
        remainblood=remainblood<0?0:remainblood;
        //修改血量
        role.setBlood(remainblood);
        //this 表示方法的调用者
        //this.getName()实际上就是调用另getName()这个方法
        //getName()最终返回的是一个名字
        System.out.println(this.getFace()+" 的"+this.getName()+"举起拳头，"+"使用了 "+getSkill()+" 技能！"+
                "打了 "+role.getFace()+" 的 "+role.getName()+"一下,造成了"+hurt+"点伤害"
        +"还剩下"+remainblood+"的血量！");
    }
    public void information(){
        System.out.println("姓名："+getName());
        System.out.println("性别："+getGender());
        System.out.println("长相:"+getFace());
        System.out.println("血量:"+getBlood());

    }
}

